//
//  3DObjFile.h
//  
//
//  Created by David Michaeli on 26/08/12.
//
//

#ifndef __DObjFile_h
#define __DObjFile_h

//================================================
// Data Types
//================================================
typedef struct 
{
    float x, y, z;
} ObjVertex;

//================================================
typedef ObjVertex ObjNormal;

//================================================
typedef struct 
{
    float u, v;
} ObjTexCoord;

//================================================
typedef struct 
{
    int Vertex[3];
    int Normal[3];
    int TexCoord[3];
} ObjTriangle;

//================================================
typedef struct
{
    int nVertex;
    int nNormal;
    int nTexCoord;
    int nTriangle;
    
    ObjVertex* VertexArray;
    ObjNormal* NormalArray;
    ObjTexCoord* TexCoordArray;
    ObjTriangle* TriangleArray;
} ObjModel;



//================================================
// Functions
//================================================

//===========================================================
// Creates an object 'ObjModel' in the memory (allocates it)
// which contains the vertices, faces and texture mappings
// of an .obj file
// Usage:
//      ObjModel* model = ObjLoadFile("tank.obj");
//
ObjModel* ObjLoadFile(char* szFileName);

//===========================================================
// Saves an .obj file contents from the memory to a file
// Usage:
//      int ObjSaveFile(model, "tank.obj");
//
int ObjSaveFile(ObjModel* model, char* fname);

//===========================================================
// Destroys the allocated memory of the .obj file.
// Usage:
//      ObjFreeModel(memory);
//
void ObjFreeModel(ObjModel* model);

#endif
